約 4,620,430 件
https://w.atwiki.jp/snesspec/pages/115.html
SEP (Set Status Bits) [ステータスビットのセット] オペランドで指定した値で、1 になっているビットを ステータスフラグで 1 にする。 SEP 命令は、ステータスフラグの m ビットと、 x ビットを セットするための唯一の手段である。 ステータスフラグのビット 5 をセットする例 SEP #%00100000 ; ビット 5 をセット 複数のビットをセットする例 SEP #%10110000 ; ビット 7, 5, 4 をセット フラグ変化 nvmxdizc オペランドで指定された値でセットされているフラグはセットされる。 それ以外のフラグは変化なし。 コード一覧 アドレッシングモード 文法 オペコード バイト数 命令サイクル Immediate SEP #const E2 2 3
https://w.atwiki.jp/snesspec/pages/123.html
XCE (Exchange Carry and Emulation Bits) [キャリーフラグとエミュレーションフラグを交換] キャリーフラグ (c) と、エミュレーションフラグ (e) の値を交換する。 XCE 命令は、エミュレーションフラグを操作するための唯一の手段である。 エミュレーションモードに移行する例 sec ; キャリーのセット xce ; キャリーとエミュレーションフラグの交換 ネイティブモードに移行する例 clc ; キャリーのクリア xce ; キャリーとエミュレーションフラグの交換 フラグ変化 e --mx/b---c e セットされていたキャリーフラグが入る c セットされていたエミュレーションフラグが入る m ネイティブモードでのみ使用されるフラグ ネイティブモードに移行する時、セットされる x ネイティブモードでのみ使用されるフラグ b 6502 エミュレーションモードでのみ使用されるフラグ (BRK) ネイティブモードの x が b になる。 コード一覧 アドレッシングモード 文法 オペコード バイト数 命令サイクル Implied XCE FB 1 2
https://w.atwiki.jp/snesspec/pages/195.html
BNE コード一覧 文法 オペコード バイト数 命令サイクル フラグ変化 内容 BNE rel D0 2 2/4 -------- Branch if Not Equal (Z=0)
https://w.atwiki.jp/catnap222/pages/97.html
#blognavi snes9xで直接aviに録画すると、映像と音がずれる問題。 何ヶ月も悩んでいたコレがようやく解決しました。 「sound rate を 22kHz から 48kHz に変える」 これだけでdesync問題が一発で解決しました。 多少エンコードサイズがでかくなる気がしますが小さなもんだいですな。 何とか自前で秀作動画をエンコできそうです。 募集終了~。 カテゴリ [動画] - trackback- 2006年06月10日 19 50 00 名前 コメント #blognavi
https://w.atwiki.jp/snesspec/pages/108.html
BNE (Branch Not Equal) [等しくない時分岐] ゼロフラグが立っていない時、オペランドで指定した 符号付きバイト分だけジャンプする。 分岐先のアドレスは、-128 ~ 127 の範囲で指定する。 フラグ変化 なし コード一覧 アドレッシングモード 文法 オペコード バイト数 命令サイクル 注 Program Counter Relative BNE near D0 2 2 1,2 1 実際に分岐が起こった時、1 サイクル追加 2 6502 エミュレーションモード (e=1) の時、 1 サイクル追加
https://w.atwiki.jp/snesspec/pages/204.html
CBNE コード一覧 文法 オペコード バイト数 命令サイクル フラグ変化 内容 CBNE dp, rel 2E 3 5/7 -------- Branch if A != (dp) CBNE dp+X,rel DE 3 6/8 -------- Branch if A != (dp+X)
https://w.atwiki.jp/wifistrat/pages/55.html
SNES Choco Island 2 (SFC・チョコレーとう2) Player (プレイヤー) Country (国) Time (タイム) Taiga Japan (日本) 52'742 J Japan (日本) 53'145 MiTi Japan (日本) 53'207 TB1 Switzerland (スイス) 53'370 Rupa Japan (日本) 53'460 Amemiya Japan (日本) 53'805 Beta Japan (日本) 53'855 FULLMETAL Japan (日本) 53'955 Gupe Japan (日本) 53'994 Towa Japan (日本) 54'007 CRH Japan (日本) 54'013 yutakart Japan (日本) 54'093 Quantum India (インド) 54'100 Pikalex Italy (イタリア) 54'300 9 Japan (日本) 54'496 CLAN Japan (日本) 54'524 嵐山 Japan (日本) 54'644 Spark Japan (日本) 54'660 Kioji Japan (日本) 55'722 Mazuk Italy (イタリア) 54'873 Kanashimi Japan (日本) 54'877 Sawara Japan (日本) 54'952 George Japan (日本) 55'253 Ameyuki Japan (日本) 55'515 Advance Japan (日本) 55'572 Folk Japan (日本) 55'647 みつばちハッチ♪ Japan (日本) 55'658 Nick Welch USA (アメリカ合衆国) 55'666 arshe Japan (日本) 55'705 Huffle France (フランス) 55'761 zNoobs France (フランス) 55'838 Ast Japan (日本) 56'311 Gabe Norway (ノルウェー) 56'835 Cuchacani Spain (スペイン) 56'922 Kazumin Japan (日本) 57'098 Amaris☆ Japan (日本) 57'251 Falco45 France (フランス) 57'880 SharX France (フランス) 57'886 ピンチ! Japan (日本) 1'03'755
https://w.atwiki.jp/snesspec/pages/31.html
命令セット ニーモニック 内容 ADC キャリー付き加算 AND アキュームレータとメモリの論理積 ASL 算術左シフト BCC キャリークリア時分岐 BCS キャリーセット時分岐 BEQ 等しい時分岐 BGE BCS のエイリアス BIT メモリビットのテスト BLT BCC のエイリアス BMI マイナス時分岐 BNE 等しくない時分岐 BPL プラス時分岐 BRA 常に分岐 BRK ソフトウェアBreak BRL 常に分岐ロング BVC オーバーフロークリア時分岐 BVS オーバーフローセット時分岐 CLC キャリーフラグクリア CLD デシマルフラグクリア CLI 割り込みフラグクリア CLV オーバーフローフラグクリア CMP アキュームレータとメモリ比較 COP コプロセッサ呼び出し CPX Xレジスタとメモリ比較 CPY Yレジスタとメモリ比較 DEA DEC A のエイリアス DEC デクリメント DEX Xレジスタデクリメント DEY Yレジスタデクリメント EOR アキュームレータとメモリの排他的論理和 INA INC A のエイリアス INC インクリメント INX Xレジスタインクリメント INY Yレジスタインクリメント JML JMP long のエイリアス JMP ジャンプ JSL サブルーチンへジャンプ JSR サブルーチンへジャンプ LDA アキュームレータに値をロード LDX Xレジスタに値をロード LDY Yレジスタに値をロード LSR 論理右シフト MVP プラス方向へブロック移動 MVN マイナス方向へブロック移動 NOP 何も実行しない ORA アキュームレータとメモリの論理和 PEA 絶対アドレスの内容をプッシュ PEI 間接アドレスの内容をプッシュ PER PC相対間接アドレスの内容をプッシュ PHA アキュームレータの内容をプッシュ PHB データバンクレジスタの内容をプッシュ PHD ダイレクトページレジスタの内容をプッシュ PHK プログラムバンクレジスタの内容をプッシュ PHP ステータスレジスタの内容をプッシュ PHX Xレジスタの内容をプッシュ PHY Yレジスタの内容をプッシュ PLA アキュームレータへポップ PLB データバンクレジスタへポップ PLD ダイレクトページレジスタへポップ PLP ステータスレジスタへポップ PLX Xレジスタへポップ PLY Yレジスタへポップ REP ステータスビットのリセット ROL 左回転シフト ROR 右回転シフト RTI 割り込みから戻る RTL サブルーチンから戻る(ロング) RTS サブルーチンから戻る SBC アキュームレータから減算 SEC キャリーフラグセット SED デシマルフラグセット SEI 割り込みフラグセット SEP ステータスビットのセット STA アキュームレータの内容をメモリにストア STP プロセッサのストップ STX Xレジスタの内容をメモリにストア STY Yレジスタの内容をメモリにストア STZ ゼロバイトをメモリにストア SWA XBAのエイリアス TAD TCDのエイリアス TAS TCSのエイリアス TAX アキュームレータからXレジスタへ転送 TAY アキュームレータからYレジスタへ転送 TCD アキュームレータからダイレクトページレジスタへ転送 TCS アキュームレータからスタックポインタへ転送 TDA TDCのエイリアス TDC ダイレクトページレジスタからアキュームレータへ転送 TRB メモリビットのテストとリセット TSA TSCのエイリアス TSB メモリビットのテストとセット TSC スタックポインタからアキュームレータへ転送 TSX スタックポインタからXレジスタへ転送 TXA Xレジスタからアキュームレータへ転送 TXS Xレジスタからスタックポインタへ転送 TXY XレジスタからYレジスタへ転送 TYA Yレジスタからアキュームレータへ転送 TYX YレジスタからXレジスタへ転送 WAI 割り込みを待つ WDM 将来のための予約 XBA アキュームレータのAとBを交換 XCE キャリーフラグとエミュレーションフラグを交換 本文中の記号について addr 2 バイトのアドレス addr/const 2 バイトの値 (アドレスまたは定数) const 1 ~ 2 バイトの定数 destbk 64KB バンク中で、どちらの向きに String が進むか dp 1 バイトのダイレクトページオフセット (6502 のゼロページ) label コードのラベル (同じ 64KB バンク内のもの) long 3 バイトのアドレス (バンクバイトを含む) nearlabel 1 バイトの符号付きオフセットで届く範囲のコードラベル sr 1 バイトのスタック相対オフセット srcebk 64KB バンク中で、どちらの向きに String が進むか フラグ 7 6 5 4 3 2 1 0 n v m x d i z c e N ネガティブフラグ (1 = Negative) V オーバーフローフラグ (1 = Overflow) M メモリ/アキュームレータ選択フラグ (1 = 8-bit, 0 = 16 bit) X インデックスレジスタ選択フラグ (1 = 8-bit, 0 = 16-bit) D 10進モードフラグ (1 = Decimal, 0 = Binary) I IRQ 禁止フラグ (1 = Disabled) Z ゼロフラグ (1 = Result Zero) C キャリーフラグ (1 = Carry) E エミュレーションフラグ (0 = Native Mode)
https://w.atwiki.jp/snesspec/pages/275.html
0x4200 - NMITIMEN (割り込み有効フラグ) アクセスフラグ 書バ強VH? D7 D6 D5 D4 D3 D2 D1 D0 n - y x - - - a n NMI 有効フラグ 0 の場合、NMI は発生しません。 1 の場合、NMI は V-Blank 開始時に発生します。 NMI は V カウンタが 0xE1 (225) の時に若干遅れて発生します。 オーバースキャンが有効の時は、たぶん 0xF0 (240) で発生します。 詳しくは 0x2133 を参照してください。 x/y IRQ 有効 0/0 = IRQ は発生しない 0/1 = V カウンタが 0x4209 ~ 0x420a で設定された値に達した時 IRQ 発生 1/0 = H カウンタが 0x4207 ~ 0x4208 で設定された値に達した時 IRQ 発生 1/1 = H カウンタが 0x4207 ~ 0x4208 で設定された値に達し、かつ V カウンタが 0x4209 ~ 0x420a で設定された値と同じなら IRQ 発生 a 自動ジョイパッド読み込み有効 1 の時、0x4218 ~ 0x421f は V カウンタが 0xE3 (227) の時に 自動的に更新されます。 (オーバースキャンが有効の時はたぶん 0xF2 (242)) いくつかのゲームはここから値を読み込もうとしますが、 オープンバス値が読み込まれているものと考えられます。 このレジスタは、電源 ON 時、リセット時に 0x00 に初期化されます。 0x4201 - WRIO (プログラマブルIOポート(出力)) アクセスフラグ 書バ強VH常 D7 D6 D5 D4 D3 D2 D1 D0 a b x x x x x x 基本的にこれは 8 ビットの I/O ポートですが、 b はコントローラポート 1 の 6 ピンに接続されていて、 a はコントローラポート 2 の 6 ピンと、PPU のラッチラインに接続されています。 a が 1 の時に 0 を書き込むと、0x2137 読み込み時のように、 H・Vカウンタがラッチされます (0 に遷移する時にラッチが起こる)。 a が 0 の時は、ラッチは起こりません。 このレジスタの他の変化は不明です。 0x4213 は、この I/O ポートの対になる入力用ポートです。 IO ポートは電源 ON 時に全て 1 が入っているかのように初期化されます。 リセット時はたぶん変化ありません。 0x4202 - WRMPYA (乗算用の被乗数) アクセスフラグ 書バ強VH常 D7 D6 D5 D4 D3 D2 D1 D0 m m m m m m m m 0x4203 - WRMPYB (乗算用の乗数) アクセスフラグ 書バ強VH常 D7 D6 D5 D4 D3 D2 D1 D0 m m m m m m m m 0x4202 に書き込みした後、 0x4203 に書き込む。 0x4203 に書き込んだ 8 "マシンサイクル" (およそ 48 マスターサイクル) 後に、 乗算した結果を 0x4216 ~ 0x4217 から読み込むことができる。 この動作で 0x4202 は変化することはなく、 そのままリセットせずに 0x4203 に違う値を書き込むと、 新しい結果が得られる。 乗算は unsigned の値で行われる。 電源ON時に 0x4202 は 0xff で初期化され、 リセット時には変化しない。 0x4204 - WRDIVL (除算用の被除数 (下位)) アクセスフラグ 書下強VH常 D7 D6 D5 D4 D3 D2 D1 D0 d d d d d d d d 0x4205 - WRDIVH (除算用の被除数 (上位)) アクセスフラグ 書上強VH常 D7 D6 D5 D4 D3 D2 D1 D0 d d d d d d d d 0x4206 - WRDIVB (除算用の除数) アクセスフラグ 書バ強VH常 D7 D6 D5 D4 D3 D2 D1 D0 b b b b b b b b 0x4204, 0x4205 に書き込んでから 0x4206 に書き込みます。 0x4206 に書き込んだ 16 "マシンサイクル" (およそ 96 マスターサイクル) 後に、 除算結果の商を 0x4214 ~ 0x4215 から、 余りを 0x4216 ~ 0x4217 から読み込むことができます。 0x4202 と同様に、たぶん 0x4204, 0x4205 もリセットされません。 除算は unsigned の値で行われます。 0 を除数に割り算した時 (Division by 0) は、商が 0xFFFF になり、 余りが 0x4204, 0x4205 の値になります。 電源ON時に、0x4204, 0x4205 は 0xffff で初期化されます。 リセット時には変化しません。 0x4207 - HTIMEL (Hカウントタイマー (下位)) アクセスフラグ 書下強VH常 D7 D6 D5 D4 D3 D2 D1 D0 h h h h h h h h 0x4208 - HTIMEH (Hカウントタイマー (上位)) アクセスフラグ 書上強VH常 D7 D6 D5 D4 D3 D2 D1 D0 - - - - - - - h 0x4200 のビット 4 がセット、ビット 5 がクリアになっていて、 H カウンタがこのレジスタに設定された値に達した時、 スキャンライン毎に IRQ が発生します。 ビット 4, 5 が両方ともセットされている時は、 V カウンタが 0x4209 ~ 0x420a にセットされた値と同じ時だけ IRQ が発生します。 H カウンタは 0 ~ 339 の範囲で変化します。 これより大きい値がセットされた時には、IRQ は発生しません。 電源ON時に、HTIME は 0x1ff で初期化されます。 リセット時には変化しません。 0x4209 - VTIMEL (Vカウントタイマー (下位)) アクセスフラグ 書下強VH常 D7 D6 D5 D4 D3 D2 D1 D0 v v v v v v v v 0x420A - VTIMEH (Vカウントタイマー (上位)) アクセスフラグ 書上強VH常 D7 D6 D5 D4 D3 D2 D1 D0 - - - - - - - v 0x4200 のビット 5 がセット、ビット 4 がクリアになっていて、 V カウンタがこのレジスタに設定された値に達した時に IRQ が発生します。 ビット 4, 5 が両方ともセットされている時は、 V カウンタがこのレジスタにセットされた値と同じ、 かつ H カウンタが 0x4207 ~ 0x4208 で設定した値に 達した時に IRQ が発生します。 テレビの方式が NTSC の時、V カウンタは 0 ~ 261 の値を取ります。 (他の全てのフレームでインターレスモードが有効の時、262 にもなる) PAL の時は 0 ~ 311 の値を取ります (インターレス時 312?)。 これらより大きい値を設定した時、IRQ は発生しません。 電源ON時に、VTIME は 0x1ff で初期化されます。 リセット時には変化しません。 0x420B - MDMAEN (DMA有効) アクセスフラグ 書バ強VH常 D7 D6 D5 D4 D3 D2 D1 D0 7 6 5 4 3 2 1 0 7/6/5/4/3/2/1/0 指定された DMA チャネルを有効にします。 CPU は全ての DMA の転送が終わるまで一時停止されます。 DMA は(たぶん) 0 ~ 7 の順番で実行されます。 詳細は 0x43x0 ~ 0x43xA を参照してください。 DMA転送中にHDMAの初期化または転送が発生した場合、 DMAはその間停止されます。 現在使用中のDMAチャネルと同じチャネルでHDMAが発生した場合は、 DMAはすぐさま停止され、その時使われていたレジスタの値を使って HDMAは転送を継続します。他のDMAチャネルは影響を受けません。 電源ON時、リセット時にこのレジスタは 0x00 で初期化されます。 0x420C - HDAMEX (HDMA有効) アクセスフラグ 書バ強VH常 D7 D6 D5 D4 D3 D2 D1 D0 7 6 5 4 3 2 1 0 7/6/5/4/3/2/1/0 指定された HDMA チャネルを有効にします。 HDMA は(たぶん) 0 ~ 7 の順番で実行されます。 詳細は 0x43x0 ~ 0x43xA を参照してください。 DMA転送中にHDMAの初期化または転送が発生した場合、 DMAはその間停止されます。 現在使用中のDMAチャネルと同じチャネルでHDMAが発生した場合は、 DMAはすぐさま停止され、その時使われていたレジスタの値を使って HDMAは転送を継続します。他のDMAチャネルは影響を受けません。 フレーム処理中にHDMAチャネルが有効になった場合、 そのチャネルは次のHDMAポイントで開始されます。 HDMAレジスタの初期化処理は、スキャンライン 0 の HDMAポイントの 前でのみ発生するので、HDMA を有効にする前に これらのレジスタを手動で初期化する必要があります。 フレーム中にすでに停止されているチャネルは、 この方法によって再度開始することはできません。 チャネル指定ビットに 0 を書き込むとき、現行の HDMA チャネルは停止されます。 この転送は、1 を書き込むことで再開することができます。 電源ON時、リセット時にこのレジスタは 0x00 で初期化されます。 0x420D - MEMSEL (ROMアクセススピード) アクセスフラグ 書バ強VH常 D7 D6 D5 D4 D3 D2 D1 D0 - - - - - - - f f FastROM 選択 SNESはマスタークロックに 21.477 MHz (1.89e9/88 Hz) を使います。 標準では、ROMアクセスの度に 8 マスターサイクルの時間がかかります。 このビットがセットされている時、バンク 0x80 ~ 0xFF に対する ROM アクセスは 6 マスターサイクルになります。 電源ON時(リセット時も?)に、このレジスタは 0x00 で初期化されます。 詳細は memmap.txt を参照してください。 0x420E - (未使用?) 0x420F - (未使用?) 0x4210 - RDNMI (NMIフラグと5A22のバージョン番号) アクセスフラグ 読バ強VH常 D7 D6 D5 D4 D3 D2 D1 D0 n - - - v v v v n NMIフラグ このフラグは、V-Blank 開始時にセットされる (現時点では、Hカウンタの値が 0x28 ~ 0x4E の間にある時だと考えている)。 読み込み時、または V-Blank 終了時にクリアされる。 おそらく、このレジスタは NMI の最中に読み込まれる必要があるだろう。 このフラグは、0x4200 のビット 7 には影響を受けない。 vvvv 5A22チップバージョン番号 これまで 2 になっているものしか見たことないが、 1 もあるだろう 電源ON時またはリセット時に、NMI はクリアされる。 - になっているビットはオープンバス。 0x4211 - TIMEUP (H/Vカウントタイマー用IRQフラグ) アクセスフラグ 読バ強VH常 D7 D6 D5 D4 D3 D2 D1 D0 i - - - - - - - i IRQフラグ このフラグは、IRQ が発行された後にセットされる (現在のところ、0x4210 の NMI フラグと同じような遅れが発生するように見えている)。 読み込み/書き込み時にクリアされる。 おそらく、このレジスタは IRQ ハンドラ内で読み込む必要があります。 このレジスタに対する読み込み操作が、CPU の IRQ ラインを 本当にクリアするのかどうか疑わしい。 説明はないが、他のドキュメントでは このレジスタが読み込み/書き込み可能と書かれている。 電源ON時、リセット時に IRQ はクリアされる。 - のビットはオープンバス。 0x4212 - HVBJOY (H/V-Blankフラグとジョイスティック有効フラグ) アクセスフラグ 読バ強VH常 D7 D6 D5 D4 D3 D2 D1 D0 v h - - - - - a v V-Blank フラグ V-Blank中はセットされている。V-Blankの外ではクリアされる。 セットされるタイミングは、Vカウンタが 0xE1(225) かつ Hカウンタが 0x16 ~ 0x17 (22 ~ 23) の時で、 クリアされるタイミングは、Vカウンタが 0 かつ Hカウンタが 0x1E (30) の時。 h H-Blank フラグ H-Blank中はセットされている。H-Blankの外ではクリアされる。 セットされるタイミングは、Hカウンタが 0x121 ~ 0x122 (289 ~ 290) の時で、 クリアされるタイミングは、Hカウンタが 0x12 ~ 0x18 (18 ~ 24) の時。 a 自動ジョイパッドステータス 自動ジョイパッド読み込み時にセットされる。 完了時にクリアされる。 典型的に、これは V-Blank 開始時にセットされ、 3 スキャンライン後に完了する。 説明はないが、他のドキュメントでは このレジスタが読み込み/書き込み可能と書かれている。 0x4213 - RDIO (プログラマブルIOポート(入力)) アクセスフラグ 読バ強VH常 D7 D6 D5 D4 D3 D2 D1 D0 a b x x x x x x このレジスタは、I/O ポートからデータを読み込む時に使う。 0x4201 から 0 をセットした時、このレジスタから 0 が読み込まれる。 0x4201 から 1 をセットした時は、このレジスタから 0 または 1 が読み込まれる。 これは、I/Oポートに接続されたデバイスがこのビットに 0 をセットするかどうかに 関連している。 b はコントローラポート 1 の 6 ピンに接続されていて、 a はコントローラポート 2 の 6 ピンと、PPU のラッチラインに接続されています。 0x4201 は、この I/O ポートの対になる出力用ポートです。 0x4214 - RDDIVL (除算結果の商 (下位)) アクセスフラグ 読下強VH常 D7 D6 D5 D4 D3 D2 D1 D0 q q q q q q q q 0x4215 - RDDIVH (除算結果の商 (上位)) アクセスフラグ 読上強VH常 D7 D6 D5 D4 D3 D2 D1 D0 q q q q q q q q 0x4204,0x4205 に書き込んだ後に 0x4206 に書き込んだ時、 0x4206 への書き込みから 16 マシンサイクル (およそ 96 マスターサイクル) 後に このレジスタから除算結果の商を読み込むことができる。 剰余は 0x4216,0x4217 から読み込む。 除算は、unsigned で行われる。 0x4216 - RDMPYL (乗算結果または除算結果の剰余 (下位)) アクセスフラグ 読下強VH常 D7 D6 D5 D4 D3 D2 D1 D0 x x x x x x x x 0x4217 - RDMPYH (乗算結果または除算結果の剰余 (上位)) アクセスフラグ 読上強VH常 D7 D6 D5 D4 D3 D2 D1 D0 x x x x x x x x 0x4202 に書き込んだ後に 0x4203 に書き込んだ時、 0x4203 への書き込みから 8 マシンサイクル (およそ 48 マスターサイクル) 後に このレジスタから乗算結果 (積) を読み込むことができる。 0x4204,0x4205 に書き込んだ後に 0x4206 に書き込んだ時、 0x4206 への書き込みから 16 マシンサイクル (およそ 96 マスターサイクル) 後に このレジスタから除算結果の余り (剰余) を読み込むことができる。 乗算、除算ともに unsigned で行われる。 0x4218 - JOY1L (コントローラポート 1 の Data1(下位)) アクセスフラグ 読下強VH常 0x4219 - JOY1H (コントローラポート 1 の Data1(上位)) アクセスフラグ 読上強VH常 0x421A - JOY2L (コントローラポート 2 の Data1(下位)) アクセスフラグ 読下強VH常 0x421B - JOY2H (コントローラポート 2 の Data1(上位)) アクセスフラグ 読上強VH常 0x421C - JOY3L (コントローラポート 1 の Data2(下位)) アクセスフラグ 読下強VH常 0x421D - JOY3H (コントローラポート 1 の Data2(上位)) アクセスフラグ 読上強VH常 0x421E - JOY4L (コントローラポート 2 の Data2(下位)) アクセスフラグ 読下強VH常 D7 D6 D5 D4 D3 D2 D1 D0 a x l r 0 0 0 0 0x421F - JOY4H (コントローラポート 2 の Data2(上位)) アクセスフラグ 読上強VH常 D7 D6 D5 D4 D3 D2 D1 D0 b y e t U D L R 上の表は、ジョイパッドの時のみ当てはまる (ジョイパッド以外のものを接続した時には当てはまらない)。 自動ジョイパッド読み込みは、0x4016,0x4017 を 16 回読み込み、 0x4218 ~ 0x421F に値をセットする。 a/b/x/y/l/r/e/t A/B/X/Y/L/R/Select/Start ボタンのステータス U/D/L/R Up/Down/Left/Right の十字キーのステータス L/R の内、どちらかのみ、U/D の内、どちらかのみがセットされる。 0x4200 のビット 0 の、自動ジョイパッド読み込みフラグが 有効になっている時のみこれらのレジスタの値が更新される。 更新中は、0x4212 のビット 0 の、 自動ジョイパッド読み込みステータスがセットされる。 この間に読み込み操作を行うと、不正な値が返る。 詳しくは コントローラ の項目を参照してください。 アドレスと名前の中の x には、DMAのチャネル番号が入る。 DMA・HDMA共に 0 ~ 7 の 8 個のチャネルがある。
https://w.atwiki.jp/snesspec/pages/32.html
目次 ロード/ストア レジスタ間移動 算術演算 論理演算 インクリメント/デクリメント ビットテスト/比較 シフト/回転シフト ジャンプ リターン 条件分岐 ステータスフラグ操作 スタック操作 ブロック移動 その他 ロード/ストア ニーモニック 内容 LDA アキュームレータに値をロード LDX Xレジスタに値をロード LDY Yレジスタに値をロード STA アキュームレータの内容をメモリにストア STX Xレジスタの内容をメモリにストア STY Yレジスタの内容をメモリにストア STZ ゼロバイトをメモリにストア レジスタ間移動 ニーモニック 内容 TAX アキュームレータからXレジスタへ転送 TAY アキュームレータからYレジスタへ転送 TYA Yレジスタからアキュームレータへ転送 TXA Xレジスタからアキュームレータへ転送 TSX スタックポインタからXレジスタへ転送 TXS Xレジスタからスタックポインタへ転送 TXY XレジスタからYレジスタへ転送 TYX YレジスタからXレジスタへ転送 TCD アキュームレータからダイレクトページレジスタへ転送 TDC ダイレクトページレジスタからアキュームレータへ転送 TCS アキュームレータからスタックポインタへ転送 TSC スタックポインタからアキュームレータへ転送 XBA アキュームレータのAとBを交換 TAD TCDのエイリアス TDA TDCのエイリアス TAS TCSのエイリアス TSA TSCのエイリアス SWA XBAのエイリアス 算術演算 ニーモニック 内容 ADC キャリー付き加算 SBC アキュームレータから減算 論理演算 ニーモニック 内容 ORA アキュームレータとメモリの論理和 AND アキュームレータとメモリの論理積 EOR アキュームレータとメモリの排他的論理和 インクリメント/デクリメント ニーモニック 内容 INC インクリメント INX Xレジスタインクリメント INY Yレジスタインクリメント DEC デクリメント DEX Xレジスタデクリメント DEY Yレジスタデクリメント INA INC A のエイリアス DEA DEC A のエイリアス ビットテスト/比較 ニーモニック 内容 BIT メモリビットのテスト TRB メモリビットのテストとリセット TSB メモリビットのテストとセット CMP アキュームレータとメモリ比較 CPX Xレジスタとメモリ比較 CPY Yレジスタとメモリ比較 CPA CMP のエイリアス シフト/回転シフト ニーモニック 内容 ASL 算術左シフト LSR 論理右シフト ROL 左回転シフト ROR 右回転シフト ジャンプ ニーモニック 内容 JMP ジャンプ JML JMP long のエイリアス JSR サブルーチンへジャンプ JSL サブルーチンへジャンプ(ロング) リターン ニーモニック 内容 RTS サブルーチンから戻る RTL サブルーチンから戻る(ロング) RTI 割り込みから戻る 条件分岐 ニーモニック 内容 BCC キャリークリア時分岐 BCS キャリーセット時分岐 BEQ 等しい時分岐 BNE 等しくない時分岐 BMI マイナス時分岐 BPL プラス時分岐 BVC オーバーフロークリア時分岐 BVS オーバーフローセット時分岐 BRA 常に分岐 BRL 常に分岐ロング BLT BCC のエイリアス BGE BCS のエイリアス ステータスフラグ操作 ニーモニック 内容 CLC キャリーフラグクリア CLD デシマルフラグクリア CLI 割り込みフラグクリア CLV オーバーフローフラグクリア SEC キャリーフラグセット SED デシマルフラグセット SEI 割り込みフラグセット REP ステータスビットのリセット SEP ステータスビットのセット XCE キャリーフラグとエミュレーションフラグを交換 スタック操作 ニーモニック 内容 PEA 絶対アドレスの内容をプッシュ PEI 間接アドレスの内容をプッシュ PER PC相対間接アドレスの内容をプッシュ PHA アキュームレータの内容をプッシュ PHP ステータスレジスタの内容をプッシュ PHX Xレジスタの内容をプッシュ PHY Yレジスタの内容をプッシュ PLA アキュームレータへポップ PLP ステータスレジスタへポップ PLX Xレジスタへポップ PLY Yレジスタへポップ PHB データバンクレジスタの内容をプッシュ PHD ダイレクトページレジスタの内容をプッシュ PHK プログラムバンクレジスタの内容をプッシュ PLB データバンクレジスタへポップ PLD ダイレクトページレジスタへポップ ブロック移動 ニーモニック 内容 MVP プラス方向へブロック移動 MVN マイナス方向へブロック移動 その他 ニーモニック 内容 NOP 何も実行しない STP プロセッサのストップ BRK ソフトウェアBreak COP コプロセッサ呼び出し WAI 割り込みを待つ WDM 将来のための予約 本文中の記号について addr2 バイトのアドレス addr/const2 バイトの値 (アドレスまたは定数) const1 ~ 2 バイトの定数 destbk64KB バンク中で、どちらの向きに String が進むか dp1 バイトのダイレクトページオフセット (6502 のゼロページ) labelコードのラベル (同じ 64KB バンク内のもの) long3 バイトのアドレス (バンクバイトを含む) nearlabel1 バイトの符号付きオフセットで届く範囲のコードラベル sr1 バイトのスタック相対オフセット srcebk64KB バンク中で、どちらの向きに String が進むか フラグ 7 6 5 4 3 2 1 0 n v m x d i z c e N ネガティブフラグ (1 = Negative) V オーバーフローフラグ (1 = Overflow) M メモリ/アキュームレータ選択フラグ (1 = 8-bit, 0 = 16 bit) X インデックスレジスタ選択フラグ (1 = 8-bit, 0 = 16-bit) D 10進モードフラグ (1 = Decimal, 0 = Binary) I IRQ 禁止フラグ (1 = Disabled) Z ゼロフラグ (1 = Result Zero) C キャリーフラグ (1 = Carry) E エミュレーションフラグ (0 = Native Mode)